iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0

前言

迴圈這個部分我覺得差別比較少,最大的差別可能就是Ruby的寫法很簡潔,可以馬上執行腦袋中的迴圈XD

另外下文有昨天沒提到 map 用法(Golang),這裡就簡單補充一下
通常在宣告時都會寫成這樣

tmp := map[string]int{"a": 0, "b": 1}

這個寫方就相當於Ruby的Hash寫法

tmp = {"a": 0, "b": 1}

不過 map 的裡面的型別要先決定好,他不像Ruby可以隨意更換後面 Value 的型態,
但若真的不確定如上 map 後面的 int 是何種型別,可以使用 interface{} 去接型別,
在程式之後再去判斷他的型別就好,詳細就可以參考這次鐵人賽的大大們介紹。

Ruby on Rails

就舉我最常用的兩個迴圈寫法

for

因為Ruby的關係,所以不用先預設count值,會自動從0開始計數,不過我還是會習慣先宣告。

> count = 0
> for count in 0..3
>   puts "count is: #{count}"
> end
count is: 0
count is: 1
count is: 2
count is: 3

each 用法

each大概是我寫Ruby以來最常用的了,常常抓到的東西都是Hash,
不管要存db還是要做什麼,用==each==就對啦~

>  tmp = {"a": "apple", "b": "banana", "c": "cat"}
 => {:a=>"apple", :b=>"banana", :c=>"cat"}
> tmp.each do |k, v|
>     puts "key: #{k} => value: #{v}"
> end
key: a => value: apple
key: b => value: banana
key: c => value: cat

Golang

Golang只要一個for就可以做到其他語言的各種迴圈功能了!
下述三個是我這幾個月來學習最常用的迴圈寫法。

一般 for 用法

for i := 1; i <= 10; i++ {
    fmt.Println(i)
}
// output: 1...10

類似 while 用法

若要執行==無窮迴圈==把 count <= 10 拿掉就可以跑到電腦壞掉囉(誤)

count := 1
for count <= 10 {
    fmt.Println(count)
    count += 1
}
// output: 1...10

類似 ruby 的 each 用法 - range

有了 range 這個用法,讓我對於轉換語言終於沒有那麼痛苦了XD

tmp := map[string]string{"a": "apple", "b": "banana"}
for k, v := range tmp {
    fmt.Printf("%s -> %s\n", k, v)
}
// output:
//  a -> apple
//  b -> banana

結論

看了那麼多用法,還是覺得Ruby的 each 最好用,而且他還有延伸用法是 each_with_index
如果是判斷陣列需要抓他的座位(忽然不知道怎麼稱呼),就可以使用這個,484超牛的呀!

參考

Ruby的循環迴圈(Loops)


上一篇
菜雞的踩坑之旅 Day 2 - 變數
系列文
菜雞的踩坑之旅 - 從 Ruby on Rails 轉換 Golang 的奇幻旅程3
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言